/*
 * To change this template, choose Tools | Templates
 * AND open the template in the editor.
 */

package modelos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author usuario
 */
public class ModeloOrden extends ModeloDB {

    private int id;
    private String nombre_cliente, cedula_cliente, status;
    private Date fecha;
    private float total;

    public ModeloOrden(int id, String status, String nombre_cliente, String cedula_cliente, Date fecha, float total) {
        super();
        this.id = id;
        this.status = status;
        this.nombre_cliente = nombre_cliente;
        this.cedula_cliente = cedula_cliente;
        this.fecha = fecha;
        this.total = total;
    }

    public ModeloOrden() {
        super();
    }

    public boolean registar(){
        conectar();
        int cantidad = contarRegistros("Orden");
        String sql="INSERT INTO Orden (id, nombre_cliente, cedula_cliente, total, fecha ,status ) VALUES(?,?,?,?,'2011-01-01',?)";
        PreparedStatement stam = crearPreparedStatement(sql);
        try {
            stam.setInt(1, getId());
            stam.setString(2, getCedula_cliente());
            stam.setString(3, getNombre_cliente());
            stam.setFloat(4, getTotal());
            stam.setString(5, getStatus());
        } catch (SQLException ex) {
            Logger.getLogger(ModeloProducto.class.getName()).log(Level.SEVERE, null, ex);
        }
        boolean sw = ejecutarQueryPrepare(stam);
        desconectar();
        return sw;
    }

    public boolean eliminar(){
        conectar();
        String sql="UPDATE Ingrediente SET status = 'E' WHERE id=?  AND status = 'A'";
        PreparedStatement stam = crearPreparedStatement(sql);
        try {
            stam.setInt(1, getId());
        } catch (SQLException ex) {
            Logger.getLogger(ModeloIngrediente.class.getName()).log(Level.SEVERE, null, ex);
        }
        boolean sw = ejecutarQueryPrepare(stam);
        desconectar();
        return sw;
    }

    public void registarProductos(Vector<String> productos){
        conectar();
        for (int i = 0; i < productos.size(); i++) {
            String dato = productos.elementAt(i);
            String sql="INSERT INTO ProductoxOrden (id_orden, id_producto,cantidad , status ) VALUES(?,?,?,'A')";
            PreparedStatement stam = crearPreparedStatement(sql);
            try {
                Vector<String> v = new Vector<String>();
                v.add(dato.substring(0, dato.indexOf("|")));
                v.add(dato.substring(dato.indexOf("|")+1,dato.length()));
                stam.setInt(1, getId());
                stam.setInt(2,Integer.parseInt(v.elementAt(0)));
                stam.setFloat(3, Integer.parseInt(v.elementAt(1)));
                ejecutarQueryPrepare(stam);
            } catch (SQLException ex) {
                Logger.getLogger(ModeloOrden.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        desconectar();
    }

    public Vector<String> listarProductos(){
        Vector<String> v = new Vector<String>();
        conectar();
        String sql="SELECT Producto.descripcion, ProductoxOrden.cantidad  FROM  Producto,ProductoxOrden,Orden where Orden.status='A' AND ProductoxOrden.status='A' AND Producto.status='A' AND Producto.id=ProductoxOrden.id_producto AND Orden.id=ProductoxOrden.id_orden AND Orden.id=?";
        PreparedStatement stam = crearPreparedStatement(sql);
        try {
            stam.setInt(1, id);
            ResultSet rs= ejecutarQuery(stam);
            while (rs.next())
                v.add(rs.getString(1)+"|"+rs.getFloat(2));
        } catch (SQLException ex) {
            Logger.getLogger(ModeloProducto.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v;
  }

    public boolean  consultar(){
    boolean sw = false;
    conectar();
    String sql="SELECT * FROM Orden WHERE id=? AND status='A'";
    PreparedStatement stam = crearPreparedStatement(sql);
     try {stam.setInt(1, getId());
     } catch (SQLException ex) {
            Logger.getLogger(ModeloProducto.class.getName()).log(Level.SEVERE, null, ex);
     }
    ResultSet rs= ejecutarQuery(stam);
    try{
        if (rs.next()){
            setNombre_cliente(rs.getString("nombre_cliente"));
            setFecha(rs.getDate("fecha"));
            setCedula_cliente(rs.getString("cedula_cliente"));
            setTotal(rs.getFloat("total"));
            sw = true;
         }
    } catch (SQLException ex) {
        Logger.getLogger(ModeloProducto.class.getName()).log(Level.SEVERE, null, ex);
    }
    return sw;
  }

    

    public String getCedula_cliente() {
        return cedula_cliente;
    }

    public void setCedula_cliente(String cedula_cliente) {
        this.cedula_cliente = cedula_cliente;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNombre_cliente() {
        return nombre_cliente;
    }

    public void setNombre_cliente(String nombre_cliente) {
        this.nombre_cliente = nombre_cliente;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    



}
